(1) Field of the Invention
The present invention relates to strengthening protection from attacks against an authentication password stored in a computer having an operating system without making any change in the basic modules of the operating system.
(2) Description of Related Art
In a personal computer (hereinafter referred to as a PC), a multi-user operating system (hereinafter referred to as an OS), such as Windows NT/2000/XP (trademarks of Microsoft Corporation), is generally used. When the PC is powered on and the OS is activated after each device is initialized by a BIOS (Basic Input/Output System), a user inputs a user account (hereinafter referred to as a user ID), which is authentication information, and an authentication password to log on the OS.
FIG. 14 is a conceptual diagram showing a conventional user logon mechanism in Windows. When the operating system is activated, three desktop screens, that is, an application desktop 1001, which is a screen to be usually displayed when a user is logged into the OS, a screen saver desktop 1003 for displaying a screen saver, a WinLogon desktop 1005 for displaying a logon screen are created. It is always only one of the desktop screens that is displayed on the display. The WinLogon desktop 1005 is a component for performing logon session management, switching of the desktop screen displayed on the display, and the like.
The screen for requesting input of a user ID and a password which is to be displayed when the OS is activated is, in the context of Windows, the WinLogon desktop 1005. It is a component called a GINA (Graphic Identification and Authentication) 1009 of the OS that displays a dialog for inputting a user ID and a password. When the user inputs a user ID and an authentication password in a dialog 1011 displayed by the GINA, the inputted user ID and authentication password are passed from the GINA 1009 to a component called LSA (Local Security Authority) 1013. The LSA functions as an agent for processing logon by and authentication of a user on a local computer. In this case, in order to pass the user ID and the authentication password from the GINA 1009 to the LSA 1013, two APIs (Application Program Interfaces), that is, LogonUser and LsaLogonUser, can be used. For LogonUser, only a user ID and an authentication password of one-byte alphanumeric characters described in ASCII codes can be inputted, while, for LsaLogonUser, only a user ID and an authentication password described in UNICODE can be inputted. Usually, LogonUser is used, and a user inputs a user ID and an authentication password of one-byte alphanumeric characters.
The LSA 1013 passes the user ID and the authentication password to an AP (Authentication Package) 1015. A component called an SAM (Security Account Manager) 1017 holds a user account database 1019. A user ID and a hashed password are stored in this database. The AP 1015 hashes the authentication password received from the LSA 1013, retrieves the user ID which has also been received from the LSA 1013 and the hashed authentication password from the user account database 1019, and authenticates whether the user who has inputted the user ID and the authentication password is an authorized user. The term “hash” used here means to convert data with a one-way function called a cryptographic hash function. If the authentication is successful, WinLogon 1007 switches the desktop screen displayed on the display to the application desktop 1001. The user account database is stored in a magnetic disk as a system file of the OS while the OS is not activated, and it is copied in the registry and used when the OS is activated.
The user authentication mechanism shown above is specified as standard specifications of Windows. Further, a mechanism for customizing user authentication has been released for developers. When a third party has to customize user authentication, it is common to create a unique GINA and register it as a component of the OS. By creating a unique GINA and passing a user ID and an authentication password from the GINA to LSA, it is possible to realize customized unique user authentication without changing the other components related to user authentication. In addition, there has also been released a method for creating a unique AP so that a third party can create a user authentication mechanism for developers. However, this method is not often used for an actual product because it requires a lot of effort in comparison with creation of a GINA.
There are documents as described below about a technique about user authentication. Japanese Patent Laid-Open No. 2005-303993 discloses a technique for synchronizing user authentication information (credential) with that on a server. Japanese Patent Laid-Open No. 2000-47983 discloses a technique for replacing a logon screen with a custom-built login screen after a user logs on by a DOS network logging session.
As described above, it is common that a user who is going to log on inputs a user ID and an authentication password of one-byte alphanumeric characters described in ASCII codes. It is desirable that the password is a character string which can be remembered only by each user and which cannot be inputted by other users. However, usually, a password constituted by a combination of meaningful English words, numeric characters and the like is often used. Therefore, such conventional user ID and authentication password are easily subject to a dictionary attack. The dictionary attack is one of attack approaches which are most frequently used for identification of a password or decryption, in which passwords generated by arbitrarily combining a word in a dictionary with a numeric character or the like are sequentially inputted and tried. If a password is generated by combining words with the use of a dictionary, the number of times of trial can be lower in comparison with generation of a password by combining characters one by one, so that a password can be identified in a shorter time. An algorithm, a tool, a dictionary in which words are re-arranged in usage frequency order, and the like can be easily obtained through the Internet.
FIG. 15 is a conceptual diagram showing a method for performing a dictionary attack against the user account database 1019. When the OS is not activated, the user account database 1019 is stored as one of system files. Further, the filename and the position in the magnetic disk are disclosed. Therefore, by activating an OS different from Windows® which authenticates an authentication password, for example, by installing a different OS such as Linux in the computer or activating a different OS from a floppy disk or an optical disk, the file in the user account database 1019 can be copied. This database 1019 includes a user ID 1109, which is not encrypted, and a hashed authentication password 1111, and the data structure is disclosed for developers. Furthermore, the specification of a hash function 1107 (for example an LM hash, an NT hash or the like) for hashing an authentication password is also disclosed for developers.
A dictionary-attack password-identification tool 1101 disclosed on the Internet and the like generates a lot of passwords 1105 by combining words picked up at random from a dictionary 1103 which is also disclosed on the Internet and the like. Then, the generated passwords 1105 are sequentially hashed by a known hash function 1107, and it is checked whether they correspond to the password 1111 included in the user account database 1019. Thus, it is easily possible to identify the password from the copy of the file in the database 1019 by the dictionary attack.
In order to make it difficult to identify a password by a dictionary attack, it is recommended to take measures such as avoiding use of a word having a meaning like those described in a dictionary as an authentication password, using a character string obtained by randomly combining symbols or numeric characters, increasing the number of characters used for the authentication password, periodically changing the authentication password, and the like. However, such a password as described above is difficult for a man to remember and lacks user-friendliness. An authentication password which a user inputs when he logs on tends to be constituted by words having meanings of one-byte alphanumeric characters described in ASCII codes. Meanwhile, as a user authentication method to be substituted for a password, biometric information such as a fingerprint, a vein and an iris, or electronic information stored in a medium such as a smart card or a token are increasingly frequently used. However, authentication using such biometric information or electronic information requires a dedicated input device or the like, and such a PC that it is reflected on the cost is expensive.
Microsoft Corporation provides a function of encrypting and storing a user account database while the main OS is not operating, which is called a system key utility (Syskey), as a solution for the above problem. It is difficult to acquire a user ID and a hashed authentication password and the like from the encrypted database. A key for encrypting the database is stored as an authentication password of a character string or a storage medium such as a floppy( disk so that it can be inputted when the OS is activated. However, this method provides only one key to one PC. Therefore, especially when Windows® is used by multiple users, it is necessary for the users to share the password or the storage medium which is the key, and this is inconvenient.
The object of the present invention is to provide an authentication password storage method and an authentication method for which protection from an attack against an authentication password for Windows® inputted and stored in a computer in ASCII codes is strengthened. Another object of the present invention is to provide a computer which realizes such a storage method or authentication method. Another object of the present invention is to provide a method for a computer to generate storage data in which the authentication password for Windows® is to be stored.